package com.exteam.model.manager;

import com.exteam.common.manager.ICallBack;
import com.exteam.common.network.IRequest;
import com.exteam.common.network.RequestManager;
import com.exteam.common.util.CommLogger;
import com.exteam.model.Const;
import com.exteam.model.vo.ResultVo;

import org.json.JSONException;
import org.json.JSONObject;

/**
 * 功能描述：Manager
 *
 * @author yangz
 */
public class UserManager {

    /**
     * 1.获取验证码
     *
     * @param mobileNumber 手机号
     * @param callBack     数据返回回调接口
     */
    public void getValidateCode(String mobileNumber, final ICallBack callBack) {
        NetManager.getValidateCode(mobileNumber, Const.CLIENT_TYPE, new IRequest.IRequestCallBack() {
            @Override
            public void onSuccess(RequestManager request) {
                String jsonStr = request.getDataString();
                try {
                    callBack.onSuccess(processResult(jsonStr));
                } catch (JSONException e) {
                    callBack.onFailed("解析获取验证码返回值异常");
                }
            }

            @Override
            public void onFailed(String failReason) {
                callBack.onFailed("获取验证码请求失败");
            }
        });
    }

    /**
     * 2.登录
     *
     * @param mobileNumber 手机号
     * @param validateCode 验证码
     * @param callBack     数据返回回调接口
     */
    public void requestLogin(String mobileNumber, String validateCode, final ICallBack callBack) {
        NetManager.requestLogin(mobileNumber, validateCode, new IRequest.IRequestCallBack() {
            @Override
            public void onSuccess(RequestManager request) {
                String jsonStr = request.getDataString();
                try {
                    callBack.onSuccess(processResult(jsonStr)
                            );
//                           , processBuyerInfoResult(jsonStr));
                } catch (JSONException e) {
                    callBack.onFailed("解析登录返回值异常");
                }
            }

            @Override
            public void onFailed(String failReason) {
                callBack.onFailed("登录请求失败");
            }
        });
    }


//    /**
//     * 25.上传文件
//     *
//     * @param file       //文件
//     * @param uploadFrom //上传来源
//     * @param callBack
//     */
//    public void uploadFile(int uploadFrom, File file, final IUpLoadCallBack callBack) {
//        NetManager.uploadFile(CommUtils.getPreferenceInt(Const.PREF_KEY_USERID), Const.CLIENT_TYPE,
//                uploadFrom, file, new RequestCallBack() {
//
//                    @Override
//                    public void onLoading(long total, long current, boolean isUploading) {
//                        callBack.onLoading(total, current, isUploading);
//                    }
//
//                    @Override
//                    public void onSuccess(ResponseInfo responseInfo) {
//                        String jsonStr = responseInfo.result.toString();
//                        try {
//                            callBack.onSuccess(processResult(jsonStr), processFileResult(jsonStr));
//                        } catch (JSONException e) {
//                            callBack.onFailed("解析上传文件返回值异常");
//                        }
//                    }
//
//                    @Override
//                    public void onFailure(HttpException e, String s) {
//                        callBack.onFailed("err:" + e.toString() + " s:" + s);
//                    }
//                });
//    }

    //=================================================================//
    //                          以下为解析                              //
    //=================================================================//

    /**
     * 解析请求的返回值
     *
     * @param jsonData
     */
    private ResultVo processResult(String jsonData) throws JSONException {
        CommLogger.d("解析前----获取请求返回值：：：" + jsonData);
        JSONObject jsonObject = new JSONObject(jsonData);
        ResultVo resultVo = new ResultVo();
        if (null != jsonObject) {
            resultVo.success = jsonObject.getBoolean("success");
            resultVo.resultCode = jsonObject.getString("resultCode");
            resultVo.resultMessage = jsonObject.getString("resultMessage");
        }
        CommLogger.d("解析后----获取请求返回值：：：" + resultVo);
        return resultVo;

    }

//    /**
//     * 解析上传图片返回值
//     *
//     * @param jsonData 结果json串
//     */
//    private String processFileResult(String jsonData) throws JSONException {
//        CommLogger.d("解析前----上传图片返回数据：：：" + jsonData);
//
//        String fileUrl = "";
//
//        JSONObject jsonObject = new JSONObject(jsonData);
//        int resultCode = jsonObject.isNull("resultCode") ? Const.RESULT_CODE_FAIL : jsonObject.getInt("resultCode");
//        //请求成功
//        if (Const.RESULT_CODE_SUCCESS == resultCode) {
//            fileUrl = jsonObject.isNull("fileUrl") ? "" : jsonObject.getString("fileUrl");
//        }
//
//        CommLogger.d("解析后----上传图片返回数据：：：" + fileUrl);
//
//        return fileUrl;
//    }

}
